#!/usr/bin/evn python
# -*- coding: utf-8 -*-
"""
-------------------------------------------------
   文件名称 :     compose
   文件功能描述 :   功能描述
   创建人 :       小钟同学
   创建时间 :          2021/12/14
-------------------------------------------------
   修改描述-2021/12/14:         
-------------------------------------------------
"""
import inspect


class ComposeApp:
    '''
    基类的主要作用：给中间件也添加我们的app示例对象的引用，使用组合模式来获得扩展功能
    这样
    1：调用apprequest_context进行请求上下文的创建
    2：中间件可以持有app的引用
    '''

    # 用户判断多继承的时候，需要需要传递app实例引用的依据
    composeapp_type: bool = True

    def __init__(self, *args, **kwargs):
        pass
        self.app = None
        # 服务注册的时候，传递当前的APP实例对象
        for item in args:
            for _, _servicer in inspect.getmembers(item, inspect.isclass):
                if _servicer.__name__ == "FastGrpcApp":
                    from grpcframe.zyxgrpc.base_app import FastGrpcApp
                    self.app: FastGrpcApp = item
